package com.gok.kanmeituyun2.view;

import android.content.Context;
import android.os.Build;
import android.util.AttributeSet;
import android.widget.LinearLayout;

import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;

/**
 * @Company
 * @Classname
 * @Description TODO  实现自定义的布局管理器
 * @Author wbs
 * Date 2021.6.18 14:52
 * Version 1.0
 */
public class SquareLinearLayout extends LinearLayout {
    public SquareLinearLayout(Context context) {
        super(context);
    }

    public SquareLinearLayout(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
    }

    public SquareLinearLayout(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    public SquareLinearLayout(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        setMeasuredDimension(getDefaultSize(0,
                widthMeasureSpec), getDefaultSize(0, heightMeasureSpec));

        // 获取测量后的宽度
        int width = getMeasuredWidth();
        //创建一个测量规格，设置高度和宽度一样
        heightMeasureSpec = widthMeasureSpec = MeasureSpec.makeMeasureSpec(width,
                MeasureSpec.EXACTLY);

      /*  1.精确模式（MeasureSpec.EXACTLY）
        在这种模式下，尺寸的值是多少，那么这个组件的长或宽就是多少。
        2.最大模式（MeasureSpec.AT_MOST）
        这个也就是父组件，能够给出的最大的空间，当前组件的长或宽最大只能为这么大，当然也可以比这个小。
        3.未指定模式（MeasureSpec.UNSPECIFIED）
        这个就是说，当前组件，可以随便用空间，不受限制*/

        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    }
}
